package com.etone.smartAudit.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.etone.smartAudit.domain.Admin;
import com.etone.smartAudit.dto.AdminPageDTO;
import com.etone.smartAudit.dto.admin.FindAdminDTO;
import com.etone.smartAudit.vo.PUumUserinfoVO;
import com.etone.smartAudit.vo.admin.AdminListVO;
import com.etone.smartAudit.vo.admin.AdminSimpleVO;
import com.etone.smartAudit.vo.workOrder.AuditManVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author: sovy
 * @date: 2020-06-03 14:44:51
 * @description:
 */
@Mapper
public interface AdminMapper extends BaseMapper<Admin> {

    /**
     * 通过账号查找管理员
     *
     * @param account
     * @return
     */
    Admin findByAccount(@Param("account") String account);

    /**
     * 管理员列表
     *
     * @param findAdminDTO
     * @return
     */
    List<AdminListVO> findList(FindAdminDTO findAdminDTO);


    /**
     * @param keys
     * @param permissionTypes
     * @param roleIds
     * @param serviceExpertIds
     * @return
     */
    List<AdminSimpleVO> findListSimple(@Param("keys") String keys, @Param("permissionTypes") List<String> permissionTypes, @Param("roleIds") List<Integer> roleIds, @Param("serviceExpertIds") List<Integer> serviceExpertIds);

    /**
     * 修改密码
     *
     * @param account
     * @param password
     * @return
     */
    int updatePwd(@Param("account") String account, @Param("password") String password);

    /**
     * 删除管理员职位
     *
     * @param adminId
     * @return
     */
    int deleteServiceExpertByAdmin(Integer adminId);

    /**
     * 新增管理员职位
     *
     * @param adminId
     * @param serviceExpertIds
     * @return
     */
    int batchInsertExpert(@Param("adminId") Integer adminId, @Param("serviceExpertIds") List<Integer> serviceExpertIds);

    /**
     * 获取整改跟进审核人字典
     *
     * @return
     */
    List<AuditManVO> getAuditMan();

    /***
     * 获取用户列表
     * @param dto
     * @return
     */
    List<PUumUserinfoVO> findUserSimple(@Param("dto") AdminPageDTO dto);

}